1. Field
The present invention relates generally to data communication, and more specifically to techniques to efficiently perform erasure-and-single-error correction decoding for linear block codes.
2. Background
With the advent of digital communication and the need to transmit large amounts of data through an impaired and band-limited channel, the need for coding of data to facilitate correct reception is of great importance. A data transmission is typically degraded by impairments in a communication channel, such as thermal noise, interference, spurious signals with the transmission bandwidth, and so on. The received data is thus typically a distorted version of the transmitted data.
Coding may be used to allow a receiver to detect and/or correct for errors in the received data. Various error-correction codes are available and may be categorized into several classes such as block codes and convolutional codes. Convolutional codes provide good error-correction capability but typically output correlated bursts of errors. Block codes have built-in burst error handling capability when combined with a proper level of interleaving. For example, a Reed-Solomon code can handle any burst of errors within a symbol, which may be defined as comprising a particular number of bits.
In theory, a block code is able to correct for a particular number of erasures and/or a particular number of errors, with the exact number for each being determined by the distance of the code. An erasure may be indicated for a symbol that is known a priori to be potentially bad, and an error is a symbol that is received in error but is not known as such a priori. Erasures are typically known or may be determined by the receiver, and may be accounted for accordingly in the decoding process. Errors are undetected symbol errors, which may be symbols that are erroneously detected as having been received correctly when in fact they were not.
Conventional erasure-and-error correction block decoders (such as the Berlekamp-Massey or Euclidean decoder) are complex and typically require implementation in dedicated hardware. These block decoders are typically too computationally intensive for software-based implementation executed on a microprocessor. Hardware based decoders can exploit parallelism in the decoding algorithms and use a pipelined datapath, both of which are not possible on a traditional microprocessor. More efficient block decoder algorithms are available that may be more suitable for software-based implementation. However, these decoder algorithms typically have limited capabilities and may be able to correct for erasures but not errors.
There is therefore a need in the art for an efficient erasure-and-error correction decoder for linear block codes, and which may be suitable for software-based implementation.